﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Configuration;
using IrendilDLL.Database;
using System.Data;
using IrendilDLL;
using Irendil.controls;
using IrendilDLL.PageControls;
using IrendilDLL.utilities;
using AjaxControlToolkit;

namespace Irendil
{
    public partial class Configuration : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

            try
            {
                // Procedo solo se é correttamente inizializzata la variabile di sessione
                String installationGUID = (String)Session["installationGUID"];
                if (installationGUID != "" || installationGUID != String.Empty)
                {
                    // Recupero le informazioni relativa al nodo dell'installazione selezionato
                    List<InstallationNode> installationNodeList = (List<InstallationNode>)Session["installationNodeList"];
                    InstallationNode installationNodeActive = null;
                    foreach (InstallationNode installationNode in installationNodeList)
                    {
                        if (installationNode.GUID == installationGUID)
                            installationNodeActive = installationNode;
                    }
                    // Se come devo trovo il nodo attivo vado avanti
                    if (installationNodeActive != null)
                    {

                        System.Web.UI.WebControls.Label labelMessageOut = (System.Web.UI.WebControls.Label)Master.Master.FindControl("LabelMessageOut");
                        labelMessageOut.Text = "Connesso a <b>" + installationNodeActive.Description+"</b>";

                    }

          
                    // Collego l'evento click della insertbar con il metodo di gestione evento (ripetuto in postbak)
                    insertBar.InsertButton.Click += new EventHandler(this.insertButton_Click);

                }
            }
            catch (Exception ex)
            {
                //// Onde evitare di perdere eccezioni riscivo l'errore su file anche se creo duplicati
                // Istanzio la classe di gestione dell'errore
                LogErrors logError = new LogErrors();
                // Scrivo l'errore su file
                logError.WriteLogToFile(ex.Source+": "+ex.Message);
                // In caso di sessione scaduta o altro redirigo alla pagina di login
                Response.Redirect("~//Logout.aspx");
            }
        }


        /// <summary>
        /// Show Add new record
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void insertButton_Click(object sender, EventArgs e)
        {
            serverConfigGridView.ShowFooter = true;
        }

        /// <summary>
        /// Hide Add new record
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void undoButton_Click(object sender, EventArgs e)
        {
            
            serverConfigGridView.ShowFooter = false;
        }

        /// <summary>
        /// Metodo associato all'inserimento di una riga sulla gridview
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void serverConfigGridView_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            // Riconosco se a lanciare l'evento é stato il tasto salva
            if (e.CommandName.Equals("saveButton"))
            {
                try
                {
                    // Ricavo tutte le textBox contenenti i dati
                    String host = ((TextBox)(serverConfigGridView.FooterRow.FindControl("hostTextBox"))).Text;
                    String description = ((TextBox)(serverConfigGridView.FooterRow.FindControl("descriptionTextBox"))).Text;
                    String GUIDHospital = ((DropDownList)(serverConfigGridView.FooterRow.FindControl("hospitalsFooterDropDownList"))).SelectedValue;
                    String GUIDHostTypes = ((DropDownList)(serverConfigGridView.FooterRow.FindControl("hostTypesFooterDropDownList"))).SelectedValue;
                    String provider = ((TextBox)(serverConfigGridView.FooterRow.FindControl("providerTextBox"))).Text;
                    String AET = ((TextBox)(serverConfigGridView.FooterRow.FindControl("aetTextBox"))).Text;
                    String port = ((TextBox)(serverConfigGridView.FooterRow.FindControl("portTextBox"))).Text;
                    String primaryIp = ((TextBox)(serverConfigGridView.FooterRow.FindControl("primaryIpTextBox"))).Text;
                    String secondaryIp = ((TextBox)(serverConfigGridView.FooterRow.FindControl("secondaryIpTextBox"))).Text;
                    String winUsername = ((TextBox)(serverConfigGridView.FooterRow.FindControl("winUsernameTextBox"))).Text;
                    String winPassword = ((TextBox)(serverConfigGridView.FooterRow.FindControl("winPasswordTextBox"))).Text;
                    String serviceUsername = ((TextBox)(serverConfigGridView.FooterRow.FindControl("ServiceUsernameTextBox"))).Text;
                    String servicePassword = ((TextBox)(serverConfigGridView.FooterRow.FindControl("ServicePasswordTextBox"))).Text;
                    String cap = ((TextBox)(serverConfigGridView.FooterRow.FindControl("capTextBox"))).Text;
                    String address = ((TextBox)(serverConfigGridView.FooterRow.FindControl("addressTextBox"))).Text;
                    String note = ((TextBox)(serverConfigGridView.FooterRow.FindControl("noteTextBox"))).Text;
                    String lat = ((TextBox)(serverConfigGridView.FooterRow.FindControl("latTextBox"))).Text;
                    String lon = ((TextBox)(serverConfigGridView.FooterRow.FindControl("lonTextBox"))).Text;

                    // Istanzio la classe controller di riferimento e inserisco l'host
                    ConfigurationControl configurationControl = new ConfigurationControl();
                    configurationControl.insertHost("", host, description, GUIDHospital, GUIDHostTypes, provider, AET, port, primaryIp, secondaryIp, winUsername, winPassword, serviceUsername, servicePassword, cap, address, note, lat, lon);

                    serverConfigGridView.ShowFooter = false;
                }
                catch (Exception ex)
                {
                    //// Onde evitare di perdere eccezioni riscivo l'errore su file anche se creo duplicati
                    // Istanzio la classe di gestione dell'errore
                    LogErrors logError = new LogErrors();
                    // Scrivo l'errore su file
                    logError.WriteLogToFile(ex.Source+": "+ex.Message);
                    // Visualizzo la finestra di errore
                    ((ModalPopupExtender)Master.Master.FindControl("ModalPopupExtender")).Show();
                }

            }


            // Riconosco se a lanciare l'evento é stato il tasto salva
            if (e.CommandName.Equals("emptySaveButton"))
            {
                try
                {
                    // Ricavo tutte le textBox contenenti i dati
                    String host = ((TextBox)(serverConfigGridView.Controls[0].Controls[0].FindControl("hostTextBox"))).Text;
                    String description = ((TextBox)(serverConfigGridView.Controls[0].Controls[0].FindControl("descriptionTextBox"))).Text;
                    String GUIDHospital = ((DropDownList)(serverConfigGridView.Controls[0].Controls[0].FindControl("hospitalsEmptyDropDownList"))).SelectedValue;
                    String GUIDHostTypes = ((DropDownList)(serverConfigGridView.Controls[0].Controls[0].FindControl("hostTypesEmptyDropDownList"))).SelectedValue;
                    String provider = ((TextBox)(serverConfigGridView.Controls[0].Controls[0].FindControl("providerTextBox"))).Text;
                    String AET = ((TextBox)(serverConfigGridView.Controls[0].Controls[0].FindControl("aetTextBox"))).Text;
                    String port = ((TextBox)(serverConfigGridView.Controls[0].Controls[0].FindControl("portTextBox"))).Text;
                    String primaryIp = ((TextBox)(serverConfigGridView.Controls[0].Controls[0].FindControl("primaryIpTextBox"))).Text;
                    String secondaryIp = ((TextBox)(serverConfigGridView.Controls[0].Controls[0].FindControl("secondaryIpTextBox"))).Text;
                    String winUsername = ((TextBox)(serverConfigGridView.Controls[0].Controls[0].FindControl("winUsernameTextBox"))).Text;
                    String winPassword = ((TextBox)(serverConfigGridView.Controls[0].Controls[0].FindControl("winPasswordTextBox"))).Text;
                    String serviceUsername = ((TextBox)(serverConfigGridView.Controls[0].Controls[0].FindControl("ServiceUsernameTextBox"))).Text;
                    String servicePassword = ((TextBox)(serverConfigGridView.Controls[0].Controls[0].FindControl("ServicePasswordTextBox"))).Text;
                    String cap = ((TextBox)(serverConfigGridView.Controls[0].Controls[0].FindControl("capTextBox"))).Text;
                    String address = ((TextBox)(serverConfigGridView.Controls[0].Controls[0].FindControl("addressTextBox"))).Text;
                    String note = ((TextBox)(serverConfigGridView.Controls[0].Controls[0].FindControl("noteTextBox"))).Text;
                    String lat = ((TextBox)(serverConfigGridView.Controls[0].Controls[0].FindControl("latTextBox"))).Text;
                    String lon = ((TextBox)(serverConfigGridView.Controls[0].Controls[0].FindControl("lonTextBox"))).Text;

                    // Istanzio la classe controller di riferimento e inserisco l'host
                    ConfigurationControl configurationControl = new ConfigurationControl();
                    configurationControl.insertHost("", host, description, GUIDHospital, GUIDHostTypes, provider, AET, port, primaryIp, secondaryIp, winUsername, winPassword, serviceUsername, servicePassword, cap, address, note, lat, lon);

                    serverConfigGridView.ShowFooter = false;

                    serverConfigGridView.DataBind();
                }
                catch (Exception ex)
                {
                    //// Onde evitare di perdere eccezioni riscivo l'errore su file anche se creo duplicati
                    // Istanzio la classe di gestione dell'errore
                    LogErrors logError = new LogErrors();
                    // Scrivo l'errore su file
                    logError.WriteLogToFile(ex.Source+": "+ex.Message);
                    // Visualizzo la finestra di errore
                    ((ModalPopupExtender)Master.Master.FindControl("ModalPopupExtender")).Show();
                }

            }
        }

    }
}